perm filename MACRO.SAI[SAI,LES] blob sn#791587 filedate 1985-03-28 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	Useful Sail macros
C00007 ENDMK
C⊗;
COMMENT Useful Sail macros;
require "[]<>" delimiters;
define !=[Comment];
define TAB=[(""&'11)],LF=[(""&'12)],VT=[(""&'13)],FF=[(""&'14)],CR=[(""&'15)],
ALT=[(""&'175)],DEL=[(""&'177)],↓=[(CR&LF)],
thru=[step 1 until],
ln=[length],
proc=[simple procedure],
ttyuuo=['51000000000],
exit=[quick_code calli '12 end],
isalpha(c)=[("a"≤c≤"z" ∨ "A"≤c≤"Z")],
isnum(c)=[("0"≤c≤"9")],
alphabet=["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"],
digits=["0123456789"],
inlines=[input(inch,inlf)],
informs=[input(inch,inff)],
inprints=[input(inch,inprt)],
inwhiter=[input(inch,inwht)],
towhites(s)=[scan(s,inprt,brk)],
toprintr(s)=[scan(s,inwht,brk)];

define show(a)=[print("a = ",a,↓)],hack(a)=[print(a)];

define symbrk=0;		! for generating symbols;
define BREAK_TABLE(table,term,omit,modes)=[
	redefine symbrk=symbrk+1,  zzz=[break]&cvs(symbrk);
	simple procedure zzz;  setbreak(table←getbreak,term,omit,modes);
	require zzz initialization;
	];
define break(id,term,omit,modes)= [
	integer id;
	break_table(id,term,omit,modes);
	];
define scnbrk(id,term,omit,modes)= [
	redefine qqq=[tableno]&cvs(symbrk);
	integer qqq;
	define id(s)=[scan(s,]&cvms(qqq)&[,brk)];
	break_table(qqq,term,omit,modes);
	];